package NowCoder.JavaSE.String;

import java.util.*;

/** 进制转换_DD5
 * 简单  通过率：22.36%  时间限制：1秒  空间限制：32M
 * 知识点 进制转化 数学
 * warning 校招时部分企业笔试将禁止编程题跳出页面，为提前适应，练习时请使用在线自测，而非本地IDE。
 * 描述
 * 给定一个十进制数M，以及需要转换的进制数N。将十进制数M转化为N进制数
 * 输入描述：
 * 输入为一行，M(32位整数)、N(2 ≤ N ≤ 16)，以空格隔开。
 * 输出描述：
 * 为每个测试实例输出转换后的数，每个输出占一行。如果N大于9，则对应的数字规则参考16进制（比如，10用A表示，等等）
 * 示例1
 * 输入：
 * 7 2
 * 输出：
 * 111
 * https://www.nowcoder.com/practice/ac61207721a34b74b06597fe6eb67c52?tpId=182&tqId=34617&ru=/exam/oj
 */
public class 进制转换_DD5 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        while(scanner.hasNext()){
            int decimalNum = scanner.nextInt();
            int metricNum = scanner.nextInt();

            if(metricNum <= 16 || metricNum >= 2){
                if(decimalNum < 0){
                    System.out.println("-" + metricChange(-decimalNum,metricNum));
                }else{
                    System.out.println(metricChange(decimalNum,metricNum));
                }
            }
        }
    }

    public static String metricChange(int decimalNum,int metricNum){
        if(decimalNum == 0 ){
            return "0";
        }

        StringBuilder sbd = new StringBuilder();
        while(decimalNum >= metricNum){
            int temp = decimalNum % metricNum;
            sbd.append(change(temp));

            decimalNum = decimalNum / metricNum;
        }

        //走到这一步代表该数是已经小于进制数了
        if(decimalNum != 0){
            sbd.append(change(decimalNum));
        }

        String str = sbd.toString();
        char arr[] = str.toCharArray();

        StringBuilder sbd1 = new StringBuilder();
        for(int i = arr.length - 1; i >= 0; i--){
            sbd1.append(arr[i]);
        }
        str = sbd1.toString();

        return str;
    }

    public static String change(int num){
        switch (num) {
            case 0 : return "0";
            case 1 : return "1";
            case 2 : return "2";
            case 3 : return "3";
            case 4 : return "4";
            case 5 : return "5";
            case 6 : return "6";
            case 7 : return "7";
            case 8 : return "8";
            case 9 : return "9";
            case 10 : return "A";
            case 11 : return "B";
            case 12 : return "C";
            case 13 : return "D";
            case 14 : return "E";
            case 15 : return "F";
        }
        return null;//实际走不到这一步，只是为了保证编译通过
    }
}
